# Структурный шаблон проектирования ("Адаптер на уровена объектов")
# Позволяет объектам с не совместимыми интерфейсами работать вместе

import abc


class IScales(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def get_weight(self) -> float:
        pass


class RussianScales(IScales):
    def __init__(self, cw: float):
        self.__currnt_weight = cw

    def get_weight(self) -> float:
        return self.__currnt_weight


class BritishScales:
    def __init__(self, cw: float):
        self.__currnt_weight = cw

    def get_weight(self) -> float:
        return self.__currnt_weight


class AdapterForBritishScales(IScales):
    def __init__(self, british_scales: BritishScales):
        self.__british_scales = british_scales

    def get_weight(self) -> float:
        return self.__british_scales.get_weight() * 0.453


if __name__ == "__main__":
    kg: float = 55
    lb: float = 55

    rScales = RussianScales(kg)
    bScales = AdapterForBritishScales(
        BritishScales(lb))

    print(rScales.get_weight())
    print(bScales.get_weight())

# 55
# 24.915
